Database systems often require computational resources or availability requirements that cannot be achieved by a single computer. In such cases, a number of machines can be arranged in a cluster to permit a single database task to be carried out by the cluster of machines rather than by a single machine. In terms of scalability, clusters of machines provide for a potentially more attractive model for database processing in comparison with alternatives such as SMP systems. In addition, cluster architectures for database systems also provide for potentially higher availability than is possible with a single machine. For these reasons, cluster architectures for database systems are used in different database management systems that are commercially available. In such systems, there are two approaches typically used in the definition of the cluster architecture: shared nothing architectures and shared disk architectures. A shared nothing architecture is typically characterized by data partitioning and no sharing between the machine components in a cluster of computers, except where communication between partitions is carried out. The database task being carried out by the cluster is subdivided and each machine carries out processing steps using its own resources to complete its subdivided portion or portions of the task. Such a cluster architecture scales extremely well for database workloads that have a limited need for intracluster communication.
A shared disk architecture configures computers in the cluster to share disks. The shared disk architecture for database clustering is typically able to provide availability of resources as the cluster can dynamically alter the allocation of the workload between the different machines in the cluster. However, the shared disk architecture has potential scalability problems because such a system requires a distributed lock manager for the database. Because in use portions of the database are locked, and the database is potentially spread across different shared disks, the mechanism to implement the lock function is similarly distributed. When such a system is scaled up, workloads that require a significant amount of lock communication between cluster machines will cause efficiency problems for the system. It is therefore desirable to develop an architecture for a clustered database management system that offers both availability of resources and scalability.